<?php namespace Common\Model;
	
	use Hdphp\Model\Model;
	
	class Goods extends  Model{
		protected $table='goods';
		
		protected $validate = array(
//		自动验证方法
//		执行store方法时都会触发自动验证方法
			array('gname','required','商品名称不能为空',3,3),
		);
		
		protected $auto=array(
		
		array('time','time','function',3,1),
//		发布时间
		array('admin_aid','getAid','method',3,1),
//		当前用户的id

		array('pic','getPic','method',3,3),
		array('small','getThumb','method',3,3),
		);
		
		public function getAid(){
//			获取用户主键方法
			return $_SESSION['id'];
		}
		
		public function getThumb(){
			if(isset($_POST['photo'])){
				return $_POST['photo'];
			}

		}
		
		public function getPic(){
			if(isset($_POST['pic'])){
				return $_POST['pic'];
			}

		}
		
		public function store(){
			



//			 p($_POST);
		//  验证商品主表
			if(!$this->create()) return FALSE;
//		传过来的是所有post到的数据，分别要被不同的表接收
//		做添加前一定要先完成验证

//			
//		添加商品主表 goods												
//		给goods表中添加需要的数据		
//		add()返回的是主键！add()返回的是主键！add()返回的是主键！		
		$gid=$this->add();		
//		add()返回的是主键！add()返回的是主键！add()返回的是主键！
//		把主键返回到gid中，商品的主键gid是有些表的外键，可能会调用
			
		//	验证商品信息表 goods_detail
//			post到的数据中，intro、small、service是存放在goods_detail表中，所以需要向该表中添加，首先需要先验证
//			goods_gid(也就是上边的gid)没有post到，后续可添加 
//			实例化\Common\Model\ArcData  开启article_data表	
		$goods_detailModel=new \Common\Model\Goods_detail;
		
		$_POST['photo']=implode(',', $_POST['photo']);
		
//			验证goods_detail表中需要的数据
		if(!$goods_detailModel->create()){
//			简略写法，直接调用上边的模型中的自动验证				
			$this->error=$goods_detailModel->getError();
			
			return FALSE;
		}
								
		
//		post的数据中没有goods_detail表中的goods_gid，所以把获取到的主键$gid压入$goods_detailModel->data['goods_gid']
		$goods_detailModel->data['goods_gid']=$gid;
//var_dump($arcDataModel->data);die;
		$goods_detailModel->add();
		
		
		
			//添加商品属性表
		$goods_attrModel=new \Common\Model\Goods_attr;
			
//		遍历来获取[attr] 我靠这里太复杂了 
//		打印可看出attr是一维数组，直接遍历数组进行重组就好
		foreach(Q('post.attr') as $k=>$v){
			$attrData=array(
				'type_attr_taid'=>$k,
				'ganame'=>$v,
				'goods_gid'=>$gid,		
			);
			$goods_attrModel->add($attrData);
//			把重组好的数组压入模型对应的数据库
		}
		
//		遍历来获取[spec] 我靠这里太复杂了 
		$data=Q('post.spec');
//		这里获取到的spec的$data是一个三位数组   太坑爹了
//		var_dump($data);die;
		$specData=array();
//		定义一个空数组，怕报错		 
		 foreach($data as $k=>$v){
//		 	这里的$k就是需要插入的数据type_attr_taid
		 	foreach($v['gtvalue'] as $kk=>$vv){
//		 		抓取第二维的$v['gtvalue']再进行遍历
		 		$specData=array(
					'ganame'=>$vv,
//					$vv就是选中的数据
					'added'=>$v['added'][$kk],
//					用这个foreach中的$kk来获取另一个数组中的added的数据，因为ganame和added是一一对应，所以$kk也是相同的
					'type_attr_taid'=>$k,
					
					'goods_gid'=>$gid,
//					在上边获取的主键gid 是该表的外键
				);	
				$goods_attrModel->add($specData);
//			把重组好的数组压入模型对应的数据库
											
		 	}
			
		 }
		 		 	
		
//		$goods_attrModel->data['goods_gid']=$gid;
//		
//		$goods_attrModel->add();
							
//
//		(9)返回成功
		return true;
			
				
	}	


	public function edit(){

		
		$postData=$_POST;

		$gid=$postData['gid'];
//		var_dump($gid);die;
//		 p($_POST);
		//  验证商品主表
			if(!$this->create()) return FALSE;
			
		$this->save();	
			

		$goods_detailModel=new \Common\Model\Goods_detail;
		
		$_POST['photo']=implode(',', $_POST['photo']);
		
//			验证goods_detail表中需要的数据
		if(!$goods_detailModel->create()){
//			简略写法，直接调用上边的模型中的自动验证				
			$this->error=$goods_detailModel->getError();
			
			return FALSE;
		}		
//		post的数据中没有goods_detail表中的goods_gid，所以把获取到的主键$gid压入$goods_detailModel->data['goods_gid']
//		$goods_detailModel->data['goods_gid']=$gid;
//p($goods_detailModel->data);die;
		$goods_detailModel->where('goods_gid',$gid)->save();
		
		
		
			//添加商品属性表
		$goods_attrModel=new \Common\Model\Goods_attr;
			
//		先将所有当前商品的商品属性全部删除，后再添加进去
		$goods_attrModel->where('goods_gid',$gid)->delete();
//		遍历来获取[attr] 我靠这里太复杂了 
//		打印可看出attr是一维数组，直接遍历数组进行重组就好
		foreach(Q('post.attr') as $k=>$v){
			$attrData=array(
				'type_attr_taid'=>$k,
				'ganame'=>$v,
				'goods_gid'=>$gid,		
			);
			$goods_attrModel->add($attrData);
//			把重组好的数组压入模型对应的数据库
		}
		
//		遍历来获取[spec] 我靠这里太复杂了 
		$data=Q('post.spec');
//		这里获取到的spec的$data是一个三位数组   太坑爹了
//		var_dump($data);die;
		$specData=array();
//		定义一个空数组，怕报错		 
		 foreach($data as $k=>$v){
//		 	这里的$k就是需要插入的数据type_attr_taid
		 	foreach($v['gtvalue'] as $kk=>$vv){
//		 		抓取第二维的$v['gtvalue']再进行遍历
		 		$specData=array(
					'ganame'=>$vv,
//					$vv就是选中的数据
					'added'=>$v['added'][$kk],
//					用这个foreach中的$kk来获取另一个数组中的added的数据，因为ganame和added是一一对应，所以$kk也是相同的
					'type_attr_taid'=>$k,
					
					'goods_gid'=>$gid,
//					在上边获取的主键gid 是该表的外键
				);	
				$goods_attrModel->add($specData);
//			把重组好的数组压入模型对应的数据库
											
		 	}
			
		 }
		 		 			

//		(9)返回成功
		return true;
		
		
		
		
		
		
		
		
	}













}	
	

	
	?>